//////////////////////////////////////////////////////////////////////////
public:
	/// <summary>
	/// returns squared distance between two 2D points with floating-point coordinates.
	/// </summary>
	/// <param name="pt1"></param>
	/// <returns></returns>
	static double SqDist2D32f(NAMESPACE::Point2D32f pt1, NAMESPACE::Point2D32f pt2)
	{
		return icvSqDist2D32f(*(CvPoint2D32f*)&pt1, *(CvPoint2D32f*)&pt2);
	}

	/// <summary>
	/// </summary>
	/// <param name="id"></param>
	/// <returns></returns>
	static NAMESPACE::Tracker2DTrackedObject3D Tracker2dTrackedObject3D(int id, NAMESPACE::Point2D32f p)
	{
		Cv3dTracker2dTrackedObject obj = cv3dTracker2dTrackedObject(id, *(CvPoint2D32f*)&p);
		return *(NAMESPACE::Tracker2DTrackedObject3D*)&obj;
	}

	/// <summary>
	/// </summary>
	/// <param name="id"></param>
	/// <returns></returns>
	static NAMESPACE::TrackerTrackedObject3D TrackerTrackedObject3D(int id, NAMESPACE::Point3D32f p)
	{
		Cv3dTrackerTrackedObject obj = cv3dTrackerTrackedObject(id, *(CvPoint3D32f*)&p);
		return *(NAMESPACE::TrackerTrackedObject3D*)&obj;
	}

	/// <summary>
	/// Releases memory used by BGStatModel
	/// </summary>
	static void ReleaseBGStatModel(IntPtr bg_model)
	{
		cvReleaseBGStatModel((CvBGStatModel**)bg_model.ToPointer());
	}

	/// <summary>
	/// Updates statistical model and returns number of found foreground regions
	/// </summary>
	/// <param name="current_frame"></param>
	/// <returns></returns>
	static int UpdateBGStatModel(IntPtr current_frame, IntPtr bg_model)
	{
		return cvUpdateBGStatModel((IplImage*)current_frame.ToPointer(), (CvBGStatModel*)bg_model.ToPointer());
	}

//////////////////////////////////////////////////////////////////////////